home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-06-30 | 48.1 KB | 1,260 lines |
- C.S.M.P. Digest Thu, 21 May 92 Volume 1 : Issue 88
-
- Today's Topics:
-
- Popup menus - menuitems at runtime
- Hooking hypercard to internet
- no BusErrors when writing to nonexistent NuBusSlot with Quadra
- Segment loader question.
- Action! information?
- (Q): Does anyone know about 'ictb' rsrcs?
- COMBINATORIX...math-type programming question?
- Programming Apple OneScanner?
- Serial Port Programming
-
-
- The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
-
- These digests are available (by using FTP, account anonymous, your email
- address as password) in the pub/mac/csmp-digest directory on ftp.cs.uoregon.
- edu. This is also the home of the comp.sys.mac.programmer Frequently Asked
- Questions list. The last several issues of the digest are available from
- sumex-aim.stanford.edu as well.
-
- These digests are also available via email. Just send a note saying that you
- want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
- automatically receive each new digest as it is created.
-
- The digest is a collection of articles from the internet newsgroup comp.sys.
- mac.programmer. It is designed for people who read c.s.m.p. semi-regularly
- and want an archive of the discussions. If you don't know what a newsgroup
- is, you probably don't have access to it. Ask your systems administrator(s)
- for details. (This means you can't post questions to the digest.)
-
- The articles in these digests are taken directly from comp.sys.mac.programmer.
- They are not edited; all articles included in this digest are in their original
- posted form. The only articles that are -not- included in these digests are
- those which didn't receive any replies (except those that give information
- rather than ask a question). All replies to each article are concatenated
- onto the original article in the order in which they were received. Article
- threads are not added to the digests until the last article added to the
- thread is at least one month old (this is to ensure that the thread is dead
- before adding it to the digests).
-
- Send administrative mail to mkelly@cs.uoregon.edu.
-
- -------------------------------------------------------
-
- From: wong_a@summer.chem.su.oz.au
- Subject: Popup menus - menuitems at runtime
- Organization: School of Chemistry, University of Sydney
- Date: Fri, 17 Apr 1992 02:02:58 GMT
-
-
- I want to use the new control for popup menus (IM VI 3-16) but I want to
- set up the menu-items at run-time. Easy enough, once you can extract the
- MenuHandle from the control's contrlData field then you can do,
-
- for (i=0;i<menuItemsCount;++i)
- AppendMenu(popupMenu,ArrayStrPtr[i]);
- ShowControl(popupCntl);
-
- Unfortunately, the control is NOT updated until you've called TrackControl,
- which leaves the control Rect blank until the user clicks on it. Has
- anyone figured out a workaround for this problem, or I am just completely
- wrong about this.
-
-
- - -----------------------------------------------------------------------------
- Adrian Wong, Dept.of Theoretical Chemistry wong_a@summer.chem.su.oz.au
- University of Sydney NSW 2006 Australia 061-2-692 4137
-
-
- +++++++++++++++++++++++++++
-
- From: wysocki@husc.harvard.edu (Chris Wysocki)
- Date: 16 Apr 92 21:06:19 GMT
- Organization: Harvard University, Cambridge, MA
-
- In article <1992Apr16.210258.1@summer.chem.su.oz.au>, wong_a@summer.chem.su.oz.au
- writes:
-
- > I want to use the new control for popup menus (IM VI 3-16) but I want to
- > set up the menu-items at run-time. Easy enough, once you can extract the
- > MenuHandle from the control's contrlData field then you can do,
- >
- > for (i=0;i<menuItemsCount;++i)
- > AppendMenu(popupMenu,ArrayStrPtr[i]);
- > ShowControl(popupCntl);
- >
- > Unfortunately, the control is NOT updated until you've called TrackControl,
- > which leaves the control Rect blank until the user clicks on it. Has
- > anyone figured out a workaround for this problem, or I am just completely
- > wrong about this.
-
- The way I got around this problem was involved puting a single blank item in
- the MENU resource and adding the items at runtime with code that looked like:
-
- for (i=0;i<menuItemsCount;++i)
- if (i == 0)
- SetItem(popupMenu,1,ArrayStrPtr[i]);
- else
- AppendMenu(popupMenu,ArrayStrPtr[i]);
- ShowControl(popupCntl);
-
- Not particularly elegant, I admit, but it works.
-
- Chris Wysocki
- wysocki@husc.harvard.edu
-
-
- +++++++++++++++++++++++++++
-
- From: quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
- Organization: The University of Western Australia
- Date: Tue, 21 Apr 1992 02:25:46 GMT
-
- In article <1992Apr16.210258.1@summer.chem.su.oz.au>, wong_a@summer.chem.su.oz.au writes:
- >
- > I want to use the new control for popup menus (IM VI 3-16) but I want to
- > set up the menu-items at run-time. Easy enough, once you can extract the
- > MenuHandle from the control's contrlData field then you can do,
- >
- > for (i=0;i<menuItemsCount;++i)
- > AppendMenu(popupMenu,ArrayStrPtr[i]);
- > ShowControl(popupCntl);
- >
- > Unfortunately, the control is NOT updated until you've called TrackControl,
- > which leaves the control Rect blank until the user clicks on it. Has
- > anyone figured out a workaround for this problem, or I am just completely
- > wrong about this.
-
- I think the appropriate magic is...
-
- SetCtlMax(...,CountMItems(...))
-
- Quinn "The Eskimo!" <quinn@cs.uwa.edu.au> "Real Coke, Diet .sig"
- Department of Computer Science, The University of Western Australia
- -- Scarred for life by ResEdit, MenuInfo.menuProc<>nil and popup menus.
-
-
- ---------------------------
-
- From: zee@fwi.uva.nl (Daniel M. van der Zee (I89))
- Subject: Hooking hypercard to internet
- Date: 16 Apr 92 14:46:13 GMT
- Organization: FWI, University of Amsterdam
-
- For the sake of a simple user interface i would like to be able to hook
- up a hypercard stack to a unix BBS running on the internet. The goal is
- to give a user of our set of stacks (course design system) a very simple
- interface to the BBS as an intergral part of the stack by adding a menu
- to the menubar with items like "post message", "mail message" and "read mail".
- A comand like "post message" should bring up a floating window and enable to
- edit a message there (+ copy/paste from the stack) and (at the user's request)
- open a connection to the bbs, post the message and logout.
-
- To handle commands like this i'm looking for external commands like
- OpenInternetConnection
- CloseInternetConnection
- SendText
- RecieveText
- Does someone know where I can get such commands and, if not, where i should
- look for documentation on writing such code (maybe i should look at the
- NCSA telnet source).
- Oh yeah, users of our stack use low-end macs (mac+/classic 2.5 Mb RAM) and
- therefore have not installed system 7 (still running 6.X) and the externals
- should be able to run on their hard/software.
-
- If you want to reply, please send me a copy of your message throug e-mail
- because our system admin set up the news system to delete messages within 2/3
- DAYS and a easterweekend is starting tomorrow.
-
- I will ofcourse post a summary to the net and let you know how i solved the
- problem.
-
- (Excuse my poor spelling etc)
-
- Thank you already,
- Daniel van der Zee
- zee@fwi.uva.nl
-
- +++++++++++++++++++++++++++
-
- From: erh0362@tesla.njit.edu
- Date: 19 Apr 92 16:55:46 GMT
- Organization: New Jersey Institute of Technology
-
- > For the sake of a simple user interface i would like to be able to hook
- > up a hypercard stack to a unix BBS running on the internet. The goal is
- > to give a user of our set of stacks (course design system) a very simple
- > interface to the BBS as an intergral part of the stack by adding a menu
- > to the menubar with items like "post message", "mail message" and "read mail".
- > A comand like "post message" should bring up a floating window and enable to
- > edit a message there (+ copy/paste from the stack) and (at the user's request)
- > open a connection to the bbs, post the message and logout.
- >
- > To handle commands like this i'm looking for external commands like
- > OpenInternetConnection
- > CloseInternetConnection
- > SendText
- > RecieveText
- > Does someone know where I can get such commands and, if not, where i should
- > look for documentation on writing such code (maybe i should look at the
- > NCSA telnet source).
- > Oh yeah, users of our stack use low-end macs (mac+/classic 2.5 Mb RAM) and
- > therefore have not installed system 7 (still running 6.X) and the externals
- > should be able to run on their hard/software.
- >
- I would suggest rethinking Hypercard as the appropriate front
- end for your BBS. You could do this much more quickly with the new
- LORAN modules for Microphone II. I could probably get a prototype up
- and running in a couple of days although I am fairly familiar with the
- environment already. Your mileage may vary. The big advantage is that
- Microphone is already written to handle _exactly_ this sort of task. No
- XCMDs or XFCNs would need to be written. The disadvantage is that
- Microphone II 4.0 is $215 or so a pop, but quantity discounts may (or
- may not) be available. Also there is a currently unreleased runtime
- version of it, hopefully soon available for small licensing fees. I
- know of one information service using this already and perhaps Software
- Ventures Corporation, the publishers of Microphone II, would be willing
- to let you in on this deal too. If you're a small group then it's
- probably cheaper to buy everyone copies of MP II than to do the sort of
- programming you would need to do to accomplish the same task in
- HyperCard.
-
-
- Elliotte Rusty Harold Department of Applied Mathematics
- elharo@m.njit.edu New Jersey Institute of Technology
- erh0362@tesla.njit.edu Newark, NJ 07103
-
- ---------------------------
-
- From: ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer)
- Subject: no BusErrors when writing to nonexistent NuBusSlot with Quadra
- Date: 14 Apr 92 10:09:52 GMT
- Organization: Techn. University of Berlin, Germany
-
-
-
- With the introduction of the quadra, apple changed
- the way the mac reacts to a BusError.
-
- The Change: when you try to _write_ to a nonexistent
- address -> nothing happens, no BusError as with
- any other Mac.
- For a hardware projekt, I have to make _even_the_Quadra_
- generate a BusError on illegal writes in NuBus
- address space.
-
-
-
- Joachim Ostheimer
- Technical University Berlin, Germany.
-
- +++++++++++++++++++++++++++
-
- From: russotto@eng.umd.edu (Matthew T. Russotto)
- Date: Tue, 14 Apr 92 15:14:25 GMT
- Organization: College of Engineering, University of Maryland, College Park
-
- In article <1992Apr14.100952.2164@cs.tu-berlin.de> ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer) writes:
- >
- >
- >With the introduction of the quadra, apple changed
- >the way the mac reacts to a BusError.
- >
- >The Change: when you try to _write_ to a nonexistent
- >address -> nothing happens, no BusError as with
- >any other Mac.
- >For a hardware projekt, I have to make _even_the_Quadra_
- >generate a BusError on illegal writes in NuBus
- >address space.
-
- On the 68030 and 68851, if the memory address is not in the
- translation table (or is marked invalid), a bus error is generated
- whether it is a write or a read. Apple would not have been able to
- change this-- therefore, either the 68040 changed it, or a bus error
- DOES happen, but the default handler just skips the offending
- instruction. If the latter, all you have to do is install your own
- bus error.
-
-
- - --
- Matthew T. Russotto russotto@eng.umd.edu russotto@wam.umd.edu
- Some news readers expect "Disclaimer:" here.
- Just say NO to police searches and seizures. Make them use force.
- (not responsible for bodily harm resulting from following above advice)
-
- +++++++++++++++++++++++++++
-
- From: ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer)
- Organization: Techn. University of Berlin, Germany
- Date: Tue, 14 Apr 1992 21:17:02 GMT
-
- i have my own buserror routine which filters all read and write busErrors
- in empty NubusSlots and this works fine with every 68030 mac.
-
- But with the Quadras i can catch only reads.
-
- You can Check it out with Macsbug:
- dm FS000000 ( S stands for SlotNr. )
- -> Unable to acces that address (68030 or 68040)
-
- sm FS000000 abcd
- -> Unable to acces that address (68030)
- -> ( nothing ) (68040)
-
- I even tested all other Vektors ( Interrupt 0-7 ....)
- ... there seems to be a Difference.
-
- Joachim Ostheimer
- Technical University Berlin, Germany.
-
-
- +++++++++++++++++++++++++++
-
- From: davoli@natinst.com (Russell J. Davoli)
- Date: 15 Apr 92 14:35:45 GMT
- Organization: National Instruments Corp.
-
- In article <1992Apr14.151425.5552@eng.umd.edu>, russotto@eng.umd.edu (Matthew T. Russotto) writes:
- >
- > In article <1992Apr14.100952.2164@cs.tu-berlin.de> ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer) writes:
- > >
- > >
- > >With the introduction of the quadra, apple changed
- > >the way the mac reacts to a BusError.
- > >
- > >The Change: when you try to _write_ to a nonexistent
- > >address -> nothing happens, no BusError as with
- > >any other Mac.
- > >For a hardware projekt, I have to make _even_the_Quadra_
- > >generate a BusError on illegal writes in NuBus
- > >address space.
- >
- > On the 68030 and 68851, if the memory address is not in the
- > translation table (or is marked invalid), a bus error is generated
- > whether it is a write or a read. Apple would not have been able to
- > change this-- therefore, either the 68040 changed it, or a bus error
- > DOES happen, but the default handler just skips the offending
- > instruction. If the latter, all you have to do is install your own
- > bus error.
-
- The 68040 hasn't changed bus error behavior, but the Quadra is a different
- beast entirely. On it, the bus interface will cause an NMI (level 7 interrupt)
- when a bus error occurs on a write. I suggest you contact Mac DTS for more
- details on this esoteric subject.
-
- Russell "Mr. Bus Error" Davoli
-
- +++++++++++++++++++++++++++
-
- From: ksand@apple.com (Kent Sandvik)
- Date: 17 Apr 92 23:34:49 GMT
- Organization: MacDTS Mongols
-
- In article <1992Apr14.151425.5552@eng.umd.edu>, russotto@eng.umd.edu (Matthew T.
- Russotto) writes:
- > On the 68030 and 68851, if the memory address is not in the
- > translation table (or is marked invalid), a bus error is generated
- > whether it is a write or a read. Apple would not have been able to
- > change this-- therefore, either the 68040 changed it, or a bus error
- > DOES happen, but the default handler just skips the offending
- > instruction. If the latter, all you have to do is install your own
- > bus error.
-
- ..our group is just now looking into the issue of installing own
- bus handlers, it's doable but skanky, many other managers create temp
- patches, and the chain of vectors could be broken due to an interrupt.
- So the best way is to turn off interrupts during the bus vector patch,
- then again this is not good either...
-
- Cheers,
- Kent
-
- +++++++++++++++++++++++++++
-
- From: ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer)
- Organization: Techn. University of Berlin, Germany
- Date: Sat, 18 Apr 1992 01:36:13 GMT
-
-
- In article <1992Apr14.151425.5552@eng.umd.edu>, russotto@eng.umd.edu (Matthew T.
- Russotto) writes:
- > On the 68030 and 68851, if the memory address is not in the
- > translation table (or is marked invalid), a bus error is generated
- > whether it is a write or a read. Apple would not have been able to....
-
- This is not the only reason for a Bus Error.
- When the Address is marked valid in the Translation Table
- and is a Nubus Address
- and the addressed Card does not answer
- ( for Example when there is no Card )
- then also a Bus Error is generated.
-
- The only exception is the Quadra 700 or 900 where write Accesses
- to an Empty NuBus Slot are ignored and cause no Bus Error.
-
- * * *
- In his article ksand@apple.com (Kent Sandvik) writes:
- > ..our group is just now looking into the issue of installing own
- > bus handlers, it's doable but skanky ...
-
- The Handler even has to check out the CPU Type, 24 or 32 Bit addressing Mode
- and VirtualMemory ...
-
- Joachim Ostheimer
-
- +++++++++++++++++++++++++++
-
- From: russotto@eng.umd.edu (Matthew T. Russotto)
- Date: Mon, 20 Apr 92 03:21:39 GMT
- Organization: College of Engineering, University of Maryland, College Park
-
- In article <1992Apr18.013613.27690@cs.tu-berlin.de> ostheim@opal.cs.tu-berlin.de (Joachim Ostheimer) writes:
- >
- >In article <1992Apr14.151425.5552@eng.umd.edu>, russotto@eng.umd.edu (Matthew T.
- >Russotto) writes:
- >> On the 68030 and 68851, if the memory address is not in the
- >> translation table (or is marked invalid), a bus error is generated
- >> whether it is a write or a read. Apple would not have been able to....
- >
- >This is not the only reason for a Bus Error.
- >When the Address is marked valid in the Translation Table
- > and is a Nubus Address
- > and the addressed Card does not answer
- > ( for Example when there is no Card )
- > then also a Bus Error is generated.
- >
- > The only exception is the Quadra 700 or 900 where write Accesses
- > to an Empty NuBus Slot are ignored and cause no Bus Error.
-
- Hmm-- maybe it would be possible to determine which nubus slots were
- empty and MARK them invalid in the translation table, if bus error on
- write to empty slot is necessary.
- - --
- Matthew T. Russotto russotto@eng.umd.edu russotto@wam.umd.edu
- Some news readers expect "Disclaimer:" here.
- Just say NO to police searches and seizures. Make them use force.
- (not responsible for bodily harm resulting from following above advice)
-
- ---------------------------
-
- Organization: University of Illinois at Chicago
- Date: Saturday, 18 Apr 1992 23:56:25 CDT
- From: John Galidakis <U21192@uicvm.uic.edu>
- Subject: Segment loader question.
-
- Hello mac gurus.
- I was considering purchasing a 680x0 assembler the other day,
- and I've decided it would be cheaper (and more fun) to sit down
- and write one. (pretty radical, huh?)
- I have a pretty good grasp of what's involved, except one minor
- point. I want to be able to create multiple segments. Now:
- Specifically, as soon as the assembler encounters a directive
- (say {$I segName}) I want The following code to be stored on
- the segment of my choice. I know that the segment loader uses
- the jump table (CODE id=0) to keep track of what's loaded and
- what's not. (Entry containing the routine offset from begginning
- of segment, MOVE.W #segid,-(SP), and _LoadSeg trap)
- Question is, is that all I need in the creation of a multisegment
- app?. I.E., is the following strategy correct?
- Assembler: encounter {$I...} directive.
- add one more entry to the jump table with offset=end of segment id=
- segName and then append the generated code there.
- Repeat, until {$I segName2} is reached, etc.
- What about CODE=1 which loads anyway?
- Any help is greatly appreciated.
- J.Galidakis-programmer/Designed Data Co.
- "Things are simple; don't complicate them..."
-
- +++++++++++++++++++++++++++
-
- From: d88-jwa@dront.nada.kth.se (Jon W{tte)
- Date: 19 Apr 92 14:36:54 GMT
- Organization: Royal Institute of Technology, Stockholm, Sweden
-
- .edu> U21192@uicvm.uic.edu (John Galidakis) writes:
-
- the jump table (CODE id=0) to keep track of what's loaded and
- what's not. (Entry containing the routine offset from begginning
- of segment, MOVE.W #segid,-(SP), and _LoadSeg trap)
-
- That's the format.
-
- What about CODE=1 which loads anyway?
-
- Does it ? I thought all the loader did was jump to table entry one
- in the jump table. By convention, that always refers to segment one.
-
- Or am I off track ?
-
- - --
- "You should meet yourself someday. I'm sure you would hate it."
- - - Me: h+@nada.kth.se; Jon W{tte (The Diplomat - NOT!)
-
- +++++++++++++++++++++++++++
-
- From: siegel@world.std.com (Rich Siegel)
- Organization: GCC Technologies
- Date: Sun, 19 Apr 1992 15:18:13 GMT
-
- In article <92109.235625U21192@uicvm.uic.edu> John Galidakis <U21192@uicvm.uic.edu> writes:
- > Hello mac gurus.
- >I was considering purchasing a 680x0 assembler the other day,
- >and I've decided it would be cheaper (and more fun) to sit down
- >and write one. (pretty radical, huh?)
- > I have a pretty good grasp of what's involved, except one minor
- >point. I want to be able to create multiple segments. Now:
- >Specifically, as soon as the assembler encounters a directive
- >(say {$I segName}) I want The following code to be stored on
- >the segment of my choice. I know that the segment loader uses
- >the jump table (CODE id=0) to keep track of what's loaded and
- >what's not. (Entry containing the routine offset from begginning
- >of segment, MOVE.W #segid,-(SP), and _LoadSeg trap)
- >"Things are simple; don't complicate them..."
-
- You're missing the forest for the trees. The creation of multiple
- segments and the jump table is the function of the linker, not
- the assembler. All the assembler itself really needs to do is to
- emit code and relocation information so that the linker can patch
- up the proper code offsets at link time. The standard format for
- representing this information on the Mac is the MPW .O format,
- which is understood and interpreted by most development systems'
- linkers, including MPW, THINK Pascal, and (with conversion) THINK
- C.
-
- For maximum usefulness, your assembler should emit .O files
- as its output. Not only will this broaden its appeal, it will
- remove the burden of writing a linker from your shoulders.
- Another good goal is to be source-compatible with the MPW
- assembler, and to offer a few features that the MPW assembler
- doesn't that people just can't live without. That way, people
- have a compelling reason to switch, and will be able to do
- so easily, without investing a lot of time in porting.
-
- R.
-
-
- - --
- - -----------------------------------------------------------------------
- Rich Siegel Internet: siegel@world.std.com
- Software Engineer, Quickdraw Group
- GCC Technologies
-
- ---------------------------
-
- From: mcnichol@terminator.psy.syr.edu (Brendan T. McNichols)
- Subject: Action! information?
- Date: Mon, 13 Apr 92 17:01:21 EDT
-
-
- Hi all,
-
- I have heard of a programming tool called Action! from Expertelligence
- Inc. Action! is a toolkit which allows a programmer to create user
- interfaces and build programs visually (ala NeXT Interface Builder).
- Does anyone know a telephone number, US Mail address, or email address
- for Expertelligence so I can get more information on this software?
-
- Thanks,
- Brendan
-
- - --
- Brendan T. McNichols, Computer Engineer (315) 443-9902
- Psyracuse U. Sychology Dept. mcnichol@psy.syr.edu (NeXT)
- 430 Huntington Hall mcnichol@rodan.acs.syr.edu (ASCII)
- Syracuse, NY 13244 mcnichol@suvm.bitnet
-
- +++++++++++++++++++++++++++
-
- From: ksand@apple.com (Kent Sandvik)
- Date: 18 Apr 92 23:47:53 GMT
- Organization: MacDTS Mongols
-
- In article <1992Apr13.170121.29874@newstand.syr.edu>,
- mcnichol@terminator.psy.syr.edu (Brendan T. McNichols) writes:
- >
- >
- > Hi all,
- >
- > I have heard of a programming tool called Action! from Expertelligence
- > Inc. Action! is a toolkit which allows a programmer to create user
- > interfaces and build programs visually (ala NeXT Interface Builder).
- > Does anyone know a telephone number, US Mail address, or email address
- > for Expertelligence so I can get more information on this software?
-
- This toolkit is for MCL (Macintosh Common Lisp), but if you are interested
- in MCL, go ahead. Sorry, I don't have their email address just now.
-
- Cheers,
- Kent
-
- ---------------------------
-
- From: danny@utkux1.utk.edu (Danny McCampbell)
- Subject: (Q): Does anyone know about 'ictb' rsrcs?
- Date: 15 Apr 92 12:21:24 GMT
- Organization: University of Tennessee
-
- Hi all.
-
- I am adding color to the buttons in my dialogs and I have just encountered
- the 'ictb' resource. The only editor for it is the hex editor. Does
- anyone know of another editor that can be used? I cannot really understand
- where what goes where.
-
- Also, is there a list of the hex codes for all colors that will tell me
- what hex numbers I need to put together to yield certain colors?
-
- Some info would really be appreciated. Thanks in advance.
-
- Danny
-
- +++++++++++++++++++++++++++
-
- From: Pete.Gontier@p811.f70.n109.z1.fidonet.org (Pete Gontier)
- Date: 16 Apr 92 05:56:17 GMT
-
-
- DM> From: danny@utkux1.utk.edu (Danny McCampbell)
-
- DM> I am adding color to the buttons in my dialogs and I have just
- DM> encountered the 'ictb' resource. The only editor for it is the
- DM> hex editor. Does anyone know of another editor that can be used?
-
- Resorcerer does a wonderful job of this editing where nothing else does.
- Contact info is in this group's FAQ.
-
- ---------------------------
-
- From: alen@crash.cts.com (Alen Shapiro)
- Subject: COMBINATORIX...math-type programming question?
- Date: 16 Apr 92 20:27:04 GMT
- Organization: Crash TimeSharing, El Cajon, CA
-
- ok you budding math-type mac programmers...here's a question...
-
- I need to figure out how many ways n objects may be picked from a set
- of m objects. Order is not relevant (ab = ba).
-
- Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
- where m=n only if 0! = 1 and my math is too shaky for this.
-
- Any takers
- - --alen
- alen@crash.cts.com
-
- mail me and I'll summarize...book recommendations appreciated.
-
- +++++++++++++++++++++++++++
-
- From: mhall@occs.cs.oberlin.edu (Matthew Hall)
- Date: 17 Apr 92 19:33:46 GMT
- Organization: Oberlin College Computer Science
-
- In article <1992Apr16.202704.8111@crash.cts.com> alen@crash.cts.com (Alen Shapiro) writes:
-
- > ok you budding math-type mac programmers...here's a question...
- >
- > I need to figure out how many ways n objects may be picked from a set
- > of m objects. Order is not relevant (ab = ba).
- >
- > Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
- > where m=n only if 0! = 1 and my math is too shaky for this.
- >
-
- well, lets see.
- First pick - m possible choices
- Second pick - m-1 possible choices
- nth pick m-n+1 choices
-
- algorithm = m*(m-1)*(m-2)*...*(m-n+1)
-
- = m!
- -----
- (m-n)! = works for boundary condition. In fact, it just works.
-
-
- - -matt hall
- - --
-
-
- - -------------------------------------------------------------------------------
- Matt Hall. mhall@occs.cs.edu OR SMH9666@OBERLIN.BITNET
- (216)-775-5805 (That's a Cleveland Area code. Lucky Me)
-
- "If a man comes up to you and says:
- 'A dog just carried away your ear.'
- Do you run after the dog, or search first for your ear?" - Moon over Morocco
-
-
- +++++++++++++++++++++++++++
-
- From: sje@xylos.ma30.bull.com (Steven J. Edwards)
- Date: 17 Apr 92 20:04:05 GMT
- Organization: Bull HN, Worldwide Information Systems, Billerica, Mass., USA
-
- In article <MHALL.92Apr17143346@occs.cs.oberlin.edu> mhall@occs.cs.oberlin.edu (Matthew Hall) writes:
- # In article <1992Apr16.202704.8111@crash.cts.com> alen@crash.cts.com (Alen Shapiro) writes:
- #
- #> ok you budding math-type mac programmers...here's a question...
- #>
- #> I need to figure out how many ways n objects may be picked from a set
- #> of m objects. Order is not relevant (ab = ba).
- #>
- #> Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
- #> where m=n only if 0! = 1 and my math is too shaky for this.
- #>
- #
- # well, lets see.
- # First pick - m possible choices
- # Second pick - m-1 possible choices
- # nth pick m-n+1 choices
- #
- # algorithm = m*(m-1)*(m-2)*...*(m-n+1)
- #
- # = m!
- # -----
- # (m-n)! = works for boundary condition. In fact, it just works.
-
- Nope. Remember, he said that order was unimportant. The
- correct answer is:
-
- C = n! / ((n - k)! * k!)
-
- For example, the number of different five card poker hands that can
- be dealt from a fifty two card deck is:
-
- C = 52! / (47! * 5!) = 2598960
-
- For thirteen card bridge hands:
-
- C = 52! / (39! * 13!) = approx 6.35 * 10 ^ 11
-
- I guess that there just aren't that many card players among
- Mac programmers.
-
- [The above opinions expressed are my own; not necessarily held by others.]
- == Steven J. Edwards Bull HN Information Systems Inc. ==
- == (508) 294-3484 300 Concord Road MS 820A ==
- == sje@xylos.ma30.bull.com Billerica, MA 01821 USA ==
- "That Government which Governs the Least, Governs Best." -- Thomas Jefferson
-
- +++++++++++++++++++++++++++
-
- From: slchambe@athena.mit.edu (Stephen L Chamberlin)
- Date: 17 Apr 92 20:11:25 GMT
- Organization: Massachusetts Institute of Technology
-
-
- >> ok you budding math-type mac programmers...here's a question...
- >>
- >> I need to figure out how many ways n objects may be picked from a set
- >> of m objects. Order is not relevant (ab = ba).
- >>
- >> Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
- >> where m=n only if 0! = 1 and my math is too shaky for this.
- >>
- >
- >well, lets see.
- >First pick - m possible choices
- >Second pick - m-1 possible choices
- >nth pick m-n+1 choices
- >
- >algorithm = m*(m-1)*(m-2)*...*(m-n+1)
- >
- > = m!
- > -----
- > (m-n)! = works for boundary condition. In fact, it just works.
- >
-
- This is correct when ordering is important. The original poster wanted to
- find the formula when order is _not_ relevant.
-
- The correct formula is "m choose n," or:
-
- m!
- --------
- n!(m-n)!
-
-
- Have fun!
-
- +++++++++++++++++++++++++++
-
- From: russotto@eng.umd.edu (Matthew T. Russotto)
- Date: Fri, 17 Apr 92 21:25:38 GMT
- Organization: College of Engineering, University of Maryland, College Park
-
- In article <MHALL.92Apr17143346@occs.cs.oberlin.edu> mhall@occs.cs.oberlin.edu (Matthew Hall) writes:
- >In article <1992Apr16.202704.8111@crash.cts.com> alen@crash.cts.com (Alen Shapiro) writes:
- >
- >> ok you budding math-type mac programmers...here's a question...
- >>
- >> I need to figure out how many ways n objects may be picked from a set
- >> of m objects. Order is not relevant (ab = ba).
- >>
- >> Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
- >> where m=n only if 0! = 1 and my math is too shaky for this.
- >>
- >
- >well, lets see.
- >First pick - m possible choices
- >Second pick - m-1 possible choices
- >nth pick m-n+1 choices
- >
- >algorithm = m*(m-1)*(m-2)*...*(m-n+1)
- >
- > = m!
- > -----
- > (m-n)! = works for boundary condition. In fact, it just works.
-
- Nope, doesn't work. Remember, order doesn't matter. It is
-
- m!
- - --------
- n!(m-n)!
-
-
- - --
- Matthew T. Russotto russotto@eng.umd.edu russotto@wam.umd.edu
- Some news readers expect "Disclaimer:" here.
- Just say NO to police searches and seizures. Make them use force.
- (not responsible for bodily harm resulting from following above advice)
-
- +++++++++++++++++++++++++++
-
- From: hards4@ee.adfa.oz.au (Brad Hards)
- Organization: Organisation! Not likely around here
- Date: Fri, 17 Apr 1992 11:39:48 GMT
-
- In article <1992Apr16.202704.8111@crash.cts.com>, alen@crash.cts.com (Alen Shapiro) writes:
- > I need to figure out how many ways n objects may be picked from a set
- > of m objects. Order is not relevant (ab = ba).
- >
- > Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
- > where m=n only if 0! = 1 and my math is too shaky for this.
-
- Nope. The answer (I hope!) is m!/(n)!(m-n)! , where ! is the factorial
- operator i.e 5!=5.4.3.2.1, and 1! = 0! = 1.
- It is wprth noting that when you want to calculate it, it is possible to
- reduce the computational overhead by noting that m!/(m-n)! can be simplified
- to m.(m-1).(m-2)...(n+1), and also that the if you want to choose n items from
- a set of m, that is identical to chooing (m-n) from the same set of m. If any
- of this doesn't make sense ( I can't do the proper notation in ascii ) let
- me know, and I'll do this again with a better word processor.
-
- As for books, any high school probability book will cover this -> if it
- sounds like "Introduction to Probability" it will do this.
-
- Brad Hards
-
-
- +++++++++++++++++++++++++++
-
- From: calvin@leland.Stanford.EDU (The Weasel)
- Date: 20 Apr 92 16:18:24 GMT
- Organization: DSG, Stanford University, CA 94305, USA
-
- In article <1992Apr16.202704.8111@crash.cts.com> alen@crash.cts.com (Alen Shapir
- o) writes:
-
- > ok you budding math-type mac programmers...here's a question...
- >
- > I need to figure out how many ways n objects may be picked from a set
- > of m objects. Order is not relevant (ab = ba).
- >
- > Is the answer (m-n)! (!=factorial)?...this works for the boundary condition
- > where m=n only if 0! = 1 and my math is too shaky for this.
- >
-
- What you want is the combination function. It is (n!)/(m! * (n-m)!)
-
- Peter
-
- - --
- Peter Chang | "I'm sure I would be much more upset
- E-Mail: calvin@leland.stanford.edu | if I weren't under such heavy sedation."
- Snail Mail: PO Box 9603 | David St. Hubbins
- Stanford, CA 94309 |
-
- ---------------------------
-
- From: spencer@med.umich.edu (Spencer W. Thomas)
- Subject: Programming Apple OneScanner?
- Organization: University of Michigan HSITN
- Date: Fri, 17 Apr 1992 22:01:50 GMT
-
- This may be the second posting of this question. If so, I apologize
- - -- our news feed has been flaky.
-
- I am looking for programming information on the Apple OneScanner. I
- need to write a special-purpose scanning application. Does anybody
- know where I can get this info? (If the answer is APDA, please feel
- free to direct a kick at my posterior.)
-
- Thanks.
-
- - --
- =Spencer W. Thomas HSITN, U of Michigan, Ann Arbor, MI 48109
- spencer.thomas@med.umich.edu 313-747-2778
-
- +++++++++++++++++++++++++++
-
- From: spencer@med.umich.edu (Spencer W. Thomas)
- Date: 13 Apr 92 16:42:24 GMT
- Organization: University of Michigan HSITN
-
- Does anyone know where I can get information on programming the Apple
- OneScanner? Would APDA have it (I'm not a member, but others here
- are)?
-
- Please respond by mail.
-
- - --
- =Spencer W. Thomas HSITN, U of Michigan, Ann Arbor, MI 48109
- spencer.thomas@med.umich.edu 313-747-2778
-
- +++++++++++++++++++++++++++
-
- From: blob@Apple.COM (Brian Bechtel)
- Date: 18 Apr 92 14:08:21 GMT
- Organization: Apple Computer Inc., Cupertino, CA
-
- spencer@med.umich.edu (Spencer W. Thomas) writes:
-
- >Does anyone know where I can get information on programming the Apple
- >OneScanner? Would APDA have it (I'm not a member, but others here
- >are)?
-
- R0138LLA Programmer's Guide to Apple Scanners $25.00
-
- The APDA price lists are available for anonymous ftp on ftp.apple.com,
- in the directory /dts/apda/price-lists. Also on that server is a
- variety of other information about APDA, in /dts/apda.
-
- You can also send a message to apda@applelink.apple.com. By the way,
- APDA hasn't had a membership fee for a while now...
-
- - --Brian Bechtel blob@apple.com "My opinion, not Apple's"
-
- +++++++++++++++++++++++++++
-
- From: roy@adeptsln.cts.com
- Date: 19 Apr 92 02:48:36 GMT
- Organization: Adept Solutions
-
- In article <SPENCER.92Apr17170150@guraldi.med.umich.edu> spencer@med.umich.edu
- (Spencer W. Thomas) writes:
- > This may be the second posting of this question. If so, I apologize
- > -- our news feed has been flaky.
- >
- > I am looking for programming information on the Apple OneScanner. I
- > need to write a special-purpose scanning application. Does anybody
- > know where I can get this info? (If the answer is APDA, please feel
- > free to direct a kick at my posterior.)
- >
- The answer _IS_ APDA. I'll leave the kicking to yourself. ;)
- - --
- Roy Lovejoy | internet: roy@adeptsln.cts.com
- Head RGB Guy | AppleLink: adept
- Adept Solutions | CIS: 72447,1447
- .................| dual certified developer: NeXT & Apple ;)
-
- ---------------------------
-
- From: hpoppe@ncar.ucar.edu (Herb Poppe)
- Subject: Serial Port Programming
- Date: 15 Apr 92 16:12:49 GMT
- Organization: National Center for Atmospheric Research
-
- In article <73763@netnews.upenn.edu> green@eniac.seas.upenn.edu (Bradley
- Green ) writes:
-
- > I'm trying to run a distributed processing network, using a Mac as the
- > master controller, with dedicated microcontrollers at the oother nodes
- > of the network. What I want to do is to be able to run the Mac serial
- > port at its maximum asynchronous speed, which I believe is 230Kbaud, but
- > I haven't found any real info on how to program the serial port to do
- > this. Note that I don't want to use AppleTalk protocols, but just to
- > send data byte-by-byte.
-
- The Mac's serial driver (software) is limited to a maximum speed of
- 57.6KB. According to the conventional wisdom, this is the maximum speed
- that Apple could achieve with an interrupt driven driver on the original
- Mac. Note that the 230KB AppleTalk drivers are not event driven. It is
- probably the case that Macs like the IIsi, etc. could support higher
- interrupt driven baud rates, but the current serial driver has no
- mechanism for specifying a baud rate higher than 57.6KB.
-
- You will have to write you own driver if you want to run at higher baud
- rates. This means you will have to get the technical details on the Zilog
- SCC.
-
- Suppose you decide to live with the 57.6KB limit and use the Apple serial
- driver. Depending on how you wire your network, there may be another
- consideration that may not be handled by the current serial driver. Are
- you using RS-485 transcievers like the SN75176 with your microcontrollers;
- that is, is your network a single twisted pair? If so, then only one
- RS-485 driver on the network can be enabled at any one time. This includes
- the driver in the Mac. I do not know if the Mac serial driver always
- enables the driver before each transmission and then disables it at the
- end of transmission, or whether it enables the driver at open and disables
- it at close, or whether it is always enabled. You can get around this
- problem by using two twisted pair and separate RS-485 drivers and
- receivers with your micros. The Mac's driver would be wired to all the
- micros' receivers and the micros' drivers would all be wired to the Mac's
- receiver. Then it would not be an issue if the Mac's driver were always
- enabled.
-
- At some point in the future, I plan to implement a network like the one
- you mention. For me, the 57.6KB limit is not a problem, but I will need to
- know how the Mac serial driver handles enabling/disabling the RS-422
- driver. If anyone can answer that question, I'd like to know.
-
- If you decide you need to write your own driver, I seem to recall that at
- one time Apple made the source code of a (maybe not THE) serial driver
- available. If I remember correctly, does anyone remember how to get this
- code?
-
- Herb Poppe hpoppe@ncar.ucar.edu
- NCAR (303) 497-1296
- 1850 Table Mesa Dr.
- Boulder, CO 80307-3000
-
- +++++++++++++++++++++++++++
-
- From: jackb@mdd.comm.mot.com (Jack Brindle)
- Organization: Motorola, Mobile Data Division - Seattle, WA
- Date: Wed, 15 Apr 1992 21:01:01 GMT
-
- In article <1992Apr15.161249.25140@ncar.ucar.edu> hpoppe@ncar.ucar.edu (Herb Poppe) writes:
- >In article <73763@netnews.upenn.edu> green@eniac.seas.upenn.edu (Bradley
- >Green ) writes:
- >
- >> I'm trying to run a distributed processing network, using a Mac as the
- >> master controller, with dedicated microcontrollers at the oother nodes
- >> of the network. What I want to do is to be able to run the Mac serial
- >> port at its maximum asynchronous speed, which I believe is 230Kbaud, but
- >> I haven't found any real info on how to program the serial port to do
- >> this. Note that I don't want to use AppleTalk protocols, but just to
- >> send data byte-by-byte.
- >
- >The Mac's serial driver (software) is limited to a maximum speed of
- >57.6KB. According to the conventional wisdom, this is the maximum speed
- >that Apple could achieve with an interrupt driven driver on the original
-
- The 57.6KB limit has far more to do with limitations imposed by the
- hardware designers at Zilog who did the 8530 than the software folks
- at Apple. Quite simply, the limitation is imposed by the use of the
- internal SCC baud rate generation clock. Take a good look at the SCC
- technical manual; it will explain why. You will also find out that the
- SCC will go faster than 56KB for asynchronous format if you supply an
- external clock.
-
- >Mac. Note that the 230KB AppleTalk drivers are not event driven. It is
-
- They also run quite different. The incoming LocalTalk frame causes an
- interrupt when the address matches the one programmed into the SCC. The
- remaining bytes of the frame are then read during that first interrupt
- service response. So, it's one interrupt per packet.
-
- >probably the case that Macs like the IIsi, etc. could support higher
- >interrupt driven baud rates, but the current serial driver has no
- >mechanism for specifying a baud rate higher than 57.6KB.
-
- Only if the clocking rate of the SCC is changed, or external clocking is
- supplied. The SCC has to run faster, not the CPU. Again, this is simply
- not primarily a software issue!
-
- >
- >You will have to write you own driver if you want to run at higher baud
- >rates. This means you will have to get the technical details on the Zilog
- >SCC.
-
- ... And run in synchronous mode. Writing a synchronous driver for the
- SCC can be quite tricky. There _is_ some *magic* that has to be applied.
- Zilog's technical notes make it a lot easier these days, but there still
- is a pretty good learning curve.
-
- >
- >Suppose you decide to live with the 57.6KB limit and use the Apple serial
- >driver. Depending on how you wire your network, there may be another
- >consideration that may not be handled by the current serial driver. Are
- >you using RS-485 transcievers like the SN75176 with your microcontrollers;
- >that is, is your network a single twisted pair? If so, then only one
- >RS-485 driver on the network can be enabled at any one time. This includes
- >the driver in the Mac. I do not know if the Mac serial driver always
- >enables the driver before each transmission and then disables it at the
- >end of transmission, or whether it enables the driver at open and disables
- >it at close, or whether it is always enabled. You can get around this
-
- In async mode, the SCC always drives the output line.
-
- >problem by using two twisted pair and separate RS-485 drivers and
- >receivers with your micros. The Mac's driver would be wired to all the
- >micros' receivers and the micros' drivers would all be wired to the Mac's
- >receiver. Then it would not be an issue if the Mac's driver were always
- >enabled.
-
- The output ports on the Mac are controlled by the SCC's RTS signal. This
- signal would need to be controlled to avoid problems. By the way this is
- not simply a problem of blocking other transmissions. Directly connecting
- the outputs of two drivers that are in opposite states can cause a very
- large current flow through both devices, and will probably end up damaging
- one or both devices. The other way to resolve the situation is to do what
- Apple did with LocalTalk, and provide some form of isolation for each Mac.
- The LocalTalk interface box effectively provides DC isolation for each Mac,
- while passing the rapidly changing data signals onto the main bus. Possibly
- the best way to do this in this situation is to use an RS442 to open-collector
- interface. This is also the method used for the ADB. You can then simply
- tie the outputs of each open-collector buffer together on the network bus.
- You would also need a pull-up resistor to make the network voltage level
- sit high when no-one is driving it. I would probably opt for an actual
- discrete transistor for this purpose (say a 2N4124, available at Radio Shack)
- rather than use an IC. You only need one per node, and the transistor has
- higher current capabilities. This would be useful for driving longer cable
- lengths.
-
- >
- >At some point in the future, I plan to implement a network like the one
- >you mention. For me, the 57.6KB limit is not a problem, but I will need to
- >know how the Mac serial driver handles enabling/disabling the RS-422
- >driver. If anyone can answer that question, I'd like to know.
-
- See above. The RTS line does it.
-
- >
- >If you decide you need to write your own driver, I seem to recall that at
- >one time Apple made the source code of a (maybe not THE) serial driver
- >available. If I remember correctly, does anyone remember how to get this
- >code?
-
- If it wasn't THE driver, it sure was a good fake. I remember it quite well.
- I have no idea where you could get it. I have a feeling that Apple's
- driver will suit the original poster's purpose quite well. All that is
- needed is a bit of cleverness on the hardware side to make things play
- together. It's not hard to do, and is a great opportunity to learn things.
-
- By the way, you might wish to look at an MC14469 Addressable Asynchronous
- Receiver/Transmitter. It is a really neat device that allows you to set
- an address for each AART, and send data on a common bus to each device.
- It will respond only to data sent to its address. It's only catch is that
- it runs rather slow, max data rate is 9600 baud. Still, the addressing
- concepts and usage might provide some good ideas.
-
- Jack Brindle
- ham radio: wa4fib
- internet: jackb@mdd.comm.mot.com
-
-
- +++++++++++++++++++++++++++
-
- From: green@eniac.seas.upenn.edu (Bradley Green )
- Date: 16 Apr 92 02:39:05 GMT
- Organization: University of Pennsylvania
-
- Back to the original poster (me), I guess. The conclusion I have drawn from
- this debate is that trying to run the serial interface at over 57,600 baud is
- more trouble than its worth; I'd rather write my software to keep traffic
- low.
-
- However, the discussion of the RS-422 interface has left me confused. I
- thought that this standard was just a 'fast' RS-232 with most of the
- control pins removed; you can still hook up an RS-232 to the Mac as
- long as it runs under 19200 baud. However, the hardware discussions I've
- seen have led me to realize that this may not be the case. What are
- the differences between the RS-232 and the RS-422? What is the easiest
- manner in which to implement the latter (422) in hardware?
-
- - --
- *----------------------------------------------------------------------------*
- * Bradley S. Green University of Pennsylvania *
- * green@eniac.seas.upenn.edu Dept. Of Systems Engineering *
- *----------------------------------------------------------------------------*
-
- +++++++++++++++++++++++++++
-
- From: bcoleman@hayes.com (Bill Coleman)
- Date: 16 Apr 92 11:00:34 GMT
- Organization: Hayes Microcomputer Products, Norcross, GA
-
- In article <1992Apr15.161249.25140@ncar.ucar.edu>, hpoppe@ncar.ucar.edu (Herb Poppe) writes:
- >
- > The Mac's serial driver (software) is limited to a maximum speed of
- > 57.6KB. According to the conventional wisdom, this is the maximum speed
- > that Apple could achieve with an interrupt driven driver on the original
- > Mac.
-
- Wrong. This is the maximum speed you get when using the internal bit
- rate generator the smallest programmable divisor (zero, which causes a
- divide by 4) with the internally supplied clock to the Z8530.
- ie: 3.672 MHz / 4 = 57375 * 16 (which is close enough to 57600)
- A 16x clock is necessary to properly operate asynchronous receivers, since
- the receiver doesn't know when the bit transitions will take place (ie
- it is not synchronized to the clock)
-
- > Note that the 230KB AppleTalk drivers are not event driven.
-
- Perhaps you mean "interrupt driven." In that case, you are wrong again.
- 230.4 Kbps LocalTalk *IS* interrupt driven.
-
- The difference here is that LocalTalk is synchronous, not asynchronous,
- and uses FM0 encoding. FM0 requires a 4x clock, not 16x, so the speed of
- LocalTalk is 230.4 = 4 * 57600.
-
- > It is
- > probably the case that Macs like the IIsi, etc. could support higher
- > interrupt driven baud rates, but the current serial driver has no
- > mechanism for specifying a baud rate higher than 57.6KB.
-
- It is a hardware limitation. If you were able to externally clock the
- serial chip, you could run asynchronous rates up to 250 Kbps. (Highest
- speed of the clock input is 4 MHz.) Unfortunately, the serial driver has
- no provisions for reprogramming the clock inputs, so you'd have to
- go directly to the chip.
-
- > You will have to write you own driver if you want to run at higher baud
- > rates. This means you will have to get the technical details on the Zilog
- > SCC.
-
- Something you should have done to start with. <grin>
-
- > I do not know if the Mac serial driver always
- > enables the driver before each transmission and then disables it at the
- > end of transmission, or whether it enables the driver at open and disables
- > it at close, or whether it is always enabled.
-
- With the serial driver, the "drivers" are always enabled.
-
- > If you decide you need to write your own driver, I seem to recall that at
- > one time Apple made the source code of a (maybe not THE) serial driver
- > available. If I remember correctly, does anyone remember how to get this
- > code?
-
- Apple did make the code available to some developers, back about 1985. This
- is no longer the case, primarily because of the changes in the Mac hardware.
-
- Writing your own driver is not recommended, because you will bump right into
- compatibility problems with the IIfx and Quadras, and potentially won't work
- at all with future Macs.
-
- There's a lot of stuff the serial driver could do, but doesn't have the
- interface calls to do. Here's to hoping Apple fixes this in the future.
-
- - --
- Bill Coleman, AA4LR ! CIS: 76067,2327 AppleLink: D1958
- Principal Software Engineer ! Packet Radio: AA4LR @ W4QO
- Hayes Microcomputer Products, Inc. ! UUCP: uunet!hayes!bcoleman
- POB 105203 Atlanta, GA 30348 USA ! Internet: bcoleman%hayes@uunet.uu.net
- Disclaimer: "My employer doesn't pay me to have opinions."
- Quote: "The same light shines on vineyards that makes deserts." -Steve Hackett.
-
-
- ---------------------------
-
- End of C.S.M.P. Digest
- **********************
-